//
//  StatusListViewModel.swift
//  sinaDemo
//
//  Created by mac on 15/12/19.
//  Copyright © 2015年 zhouxubin. All rights reserved.
//

import UIKit
import SVProgressHUD

class StatusListViewModel: NSObject {
    
    // viewmodel其实就是把原来model中的逻辑处理分开了,model专门放模型,而这个练习model和view之间的联系可以处理数据的请求
    class func loadData(since_id: Int64, max_id: Int64, finished:(statuses: [Status]?) ->()) {
        // 创建单例对象
        let netWorkTool = NetWorkingTool.shareNetworking
        let urlStr = "2/statuses/friends_timeline.json"
        // 获取access_token
        let access_token = UserAccountViewModel().access_token
        // 判断是否有值
        guard let token = access_token else {
            // 没有值,提示用户重新登录
            SVProgressHUD.showErrorWithStatus("请重新登录!")
            return
        }
        
        var params = ["access_token" : token]
        if since_id > 0 { // 下拉刷新
            params["since_id"] = "\(since_id)"
        }else if max_id > 0 { // 上拉刷新, 需要-1
            params["max_id"] = "\(max_id - 1)"
        }
        
        // 发送请求
        netWorkTool.requestWith(HTTPMethod.GET, urlString: urlStr, parameters: params) { (dict, error) -> () in
            if error != nil {
                // 请求失败
                // 提示用户网络信号不好
                SVProgressHUD.showInfoWithStatus("网络繁忙,请稍后再试")
                finished(statuses: nil)
                return
            }
            // 请求成功
            // 字典转模型, 转换成一个字典数组类型
            if let array = dict!["statuses"] as? [[String : AnyObject]] {
                // 实例化一个装status模型的数组
                var arrM = [Status]()
                // 遍历array,字典转模型
                for item in array {
                    let status = Status(dict: item)
                    arrM.append(status)
                }
                SVProgressHUD.dismiss()
                // 执行成功后的回调
                finished(statuses: arrM)
            }
        }
        
    }
}
